Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Розробка порівнювача 32х розрядних чисел засобами мови VHDL»

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2014
Тип роботи:
Лабораторна робота
Предмет:
Реконфігуровані комп ютери
Варіант:
7

Частина тексту файла

/ Звіт до лабораторної роботи №1 з дисципліни «Реконфігуровані комп’ютери» на тему: «Розробка порівнювача 32х розрядних чисел засобами мови VHDL» Львів-2014 Лабораторна робота #1 На тему: Розробка порівнювача 32х розрядних чисел засобами мови VHDL Мета: Розробити схему порівняння 32-ох розрядних чисел. Все це реалізувати на Verilog (бажано), без використання уже вбудованого порівняльного елемента (тобто - створити свій порівняльний елемент, описати його логіку роботи). А на виході елемента отримати три сигнали: рівне, менше, або більше. При створенні схеми можна зробити синхронну, чи асинхронну. Виконання роботи: Маючи залишкові знання із мови VHDL я вирішив працювати саме з нею. Оскільки використовувати готові елементи порівнювання на більше-менше не можна, мені довелось придумати спосіб їх заміни. За умовою мій спецобчислювач складається із двох вхідних портів по 32 біти і одного вихідного на чотири біти ( для отримання результату). constant equal:bit_vector(3 downto 0):="1111"; -- Числа, що ввелись є рівними constant low:bit_vector(3 downto 0):="0000"; -- А є меншим ніж число B constant high:bit_vector(3 downto 0):="0001"; -- А є більшим ніж число B Мій компаратор базується на функції конкатенації і вибірки з кейсу результатів, котрі підходять. З двох чисел я виділяю по два старших біта і обєдную їх, опісля чого шукаю відповідну комбінацію в «кейсі» і виводжу результат. Наповнення CASE: when "0000"=>Result<=equal; when "0101"=>Result<=equal; when "1010"=>Result<=equal; when "1111"=>Result<=equal; when "0001"=>Result<= low;exit; when "0010"=>Result<= low;exit; when "0011" =>Result<=low; exit; when "0100" =>Result<=high; exit; when "0110" =>Result<=low; exit; when "0111" =>Result<=low;exit; when "1000" =>Result<=high;exit; when "1001" =>Result<=high; exit; when "1011" =>Result<=low; exit; when "1100" =>Result<=high;exit; when "1101" =>Result<=high; exit; when "1110" =>Result<=high; exit; Повний VHDL код компаратора: library IEEE; use IEEE.STD_LOGIC_1164.all; entity CALC is port( A : in BIT_VECTOR(31 downto 0); B : in BIT_VECTOR(31 downto 0); Clock:in bit; RESULT : inout BIT_vector(3 downto 0) ); end CALC; architecture CALC of CALC is constant equal:bit_vector(3 downto 0):="1111"; constant low:bit_vector(3 downto 0):="0000"; constant high:bit_vector(3 downto 0):="0001"; begin PROCESS(A,B) variable temp1:bit_VECTOR(3 downto 0); BEGIN for CNTR IN 31 downto 0 loop if cntr=0 THEN EXIT; end if; temp1:=A(cntr downTO (cntr-1)) & B(cntr DOWNTO (cntr-1)); case temp1 is when "0000"=>Result<=equal; when "0101"=>Result<=equal; when "1010"=>Result<=equal; when "1111"=>Result<=equal; when "0001"=>Result<= low;exit; when "0010"=>Result<= low;exit; when "0011" =>Result<=low; exit; when "0100" =>Result<=high; exit; when "0110" =>Result<=low; exit; when "0111" =>Result<=low;exit; when "1000" =>Result<=high;exit; when "1001" =>Result<=high; exit; when "1011" =>Result<=low; exit; when "1100" =>Result<=high;exit; when "1101" =>Result<=high; exit; when "1110" =>Result<=high; exit; when others=>Result<="0101"; end case; end loop; -- enter your statements here -- END PROCESS; end CALC; Наповнення TestBench: calc_32:process begin wait for 50 ns; A<="00000000000000000000000000000001"; B<="00000000000000000000000000000000"; wait for 50 ns; A<="00000000000000000000000000000010"; B<="00000000000000000000000101010101"; wait for 50 ns; A<="11111111111111111111111111111111"; B<="11111111111111111111111111111111"; wait for 50 ns; A<="11111111111111111111111111111111"; B<="11111111111111111111111111111111"; end process; Моделювання: / При A=0 та B=0 результат F, тобто числа рівні. При A=1 та B=0 результат 1, тобто число А є біл...
Антиботан аватар за замовчуванням

29.11.2014 15:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини